package Funcionalidad;

import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Statement;
import java.io.File;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class Fotografias {

    private static final String controlador = "com.mysql.jdbc.Driver";
    private static final String url = "jdbc:mysql://localhost/flog";
    private static final String usuario = "root";
    private static final String clave = "";


    static {
        try {
            Class.forName(controlador);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("Error creating driver" + " class. Cause: " + e);
        }
    }

    public static Fotografia ResultSetToFotografia(ResultSet resultado) throws SQLException {
        return new Fotografia(resultado.getInt("id_foto"), resultado.getInt("id_galeria"), resultado.getString("titulo"), resultado.getString("ruta"));
    }
//devuelve una lista con las fotografias de la galeria
    public static List<Fotografia> consultaGaleria(int id_galeria) throws Exception {

        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        List<Fotografia> lista = new ArrayList<Fotografia>();
        //solicitud/recepcion de peticiones
        Statement solicitud = (Statement) conexion.createStatement();
        ResultSet resultados = solicitud.executeQuery("SELECT * FROM `fotografia` HAVING id_galeria=" + id_galeria + " ORDER BY `id_foto` desc");
        while (resultados.next()) {
            Fotografia fotografia = Fotografias.ResultSetToFotografia(resultados);
            lista.add(fotografia);
        }
        resultados.close();
        solicitud.close();
        conexion.close();
        return lista;
    }
//devuelve la info de la fotografia que se le pasa como parametro
    public static Fotografia getFoto(int idfoto) throws Exception {
        List<Fotografia> lista = new ArrayList<Fotografia>();
        Fotografia fotografia = null;
        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        //solicitud/recepcion de peticiones
        Statement solicitud = (Statement) conexion.createStatement();
        ResultSet resultados = solicitud.executeQuery("SELECT * FROM `fotografia` WHERE id_foto=" + idfoto);
        while (resultados.next()) {
            fotografia = Fotografias.ResultSetToFotografia(resultados);
            lista.add(fotografia);
        }

        resultados.close();
        solicitud.close();
        conexion.close();
        return fotografia;
    }
// borra la fotografia y los comentarios asociados que se le pasa por parametro
       public static void borraFoto(int id_foto) throws Exception {

        Fotografia foto=Fotografias.getFoto(id_foto);
        File file = new File(foto.getRuta());
        //String line = null;
        file.delete(); //borro el archivo
        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        //solicitud/recepcion de peticiones
        Statement solicitud1 = (Statement) conexion.createStatement();
        Statement solicitud2 = (Statement) conexion.createStatement();

        solicitud1.executeUpdate("DELETE FROM fotografia WHERE id_foto="+id_foto);
        solicitud2.executeUpdate("DELETE FROM comentario_foto WHERE id_foto="+id_foto);

        solicitud1.close();
        solicitud2.close();
        conexion.close();

    }
       //se crea una nueva foto con los datos que se le pasan por parametro
    public static void nuevaFoto(int id_galeria, String titulo, String ruta) throws Exception {
        Connection conexion = (com.mysql.jdbc.Connection) DriverManager.getConnection(url, usuario, clave);
        //solicitud/recepcion de peticiones
        Statement solicitud = (Statement) conexion.createStatement();
        try{
        solicitud.executeUpdate("INSERT INTO fotografia (id_galeria,titulo,ruta) values("+id_galeria+",'"+titulo+"','"+ruta+"')");
        }catch(Exception e){}

        solicitud.close();
        conexion.close();
    }
}
